package cn.biplam.common.file.excel;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * Excel Cell 样式操作类
 * @author WangSong 2009-9-3下午03:19:08
 * @version 1.0
 */
public class ExcelCellStyle {
	
	/** Excel cell样式对象*/
	private HSSFCellStyle style;
	private HSSFFont font;
	
	public ExcelCellStyle(HSSFWorkbook workbook){
		style = workbook.createCellStyle();
		font = workbook.createFont();
	}
	
	/**
	 * 取样式对象
	 * @return
	 */
	public HSSFCellStyle get(){
		return style;
	}
	
	/**
	 * 背景颜色
	 * 参数值:HSSFColor.BLUE.index
	 * @param color 背景颜色 
	 */
	public void setBackgroundColor(short color){
		style.setFillBackgroundColor(color);
		style.setFillPattern(HSSFCellStyle.THIN_FORWARD_DIAG);
	}
	
	/**
	 * 前景颜色
	 * 参数值:HSSFColor.BLUE.index
	 * @param color 背景颜色 
	 */
	public void setForegroundColor(short color){
		style.setFillForegroundColor(color);
		style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
	}
	
	/**
	 * 设置布局样式
	 * 参数值:HSSFCellStyle.ALIGN_CENTER
	 * @param patternStyle 布局样式 
	 */
	public void setFillPattern(short patternStyle){
		style.setFillPattern(patternStyle);
	}
	
	/**
	 * 边框颜色 
	 *  参数值:HSSFCellStyle.ALIGN_CENTER
	 * @param colorLeft   左边颜色
	 * @param colorRight  右边颜色
	 * @param colorTop    上边颜色
	 * @param colorBottom 下边颜色
	 */
	public void setBorderColor(short colorLeft,
			                   short colorRight,
			                   short colorTop,
			                   short colorBottom){
		style.setLeftBorderColor(colorLeft);
		style.setRightBorderColor(colorRight);
		style.setTopBorderColor(colorTop);
		style.setBottomBorderColor(colorBottom);
	}
	
	/**
	 * 设置边框 
	 * 参数值:HSSFCellStyle.BORDER_NONE
	 * @param borderLeft 左边框
	 * @param borderRight 右边框
	 * @param borderTop 上边框
	 * @param borderBottom 下边框
	 */
	public void setBorder(short borderLeft,
						  short borderRight,
						  short borderTop,
						  short borderBottom){
		style.setBorderLeft(borderLeft);
		style.setBorderRight(borderRight);
		style.setBorderTop(borderTop);
		style.setBorderBottom(borderBottom);
	}
	
	/**
	 * 设置字体
	 * @param font 字体
	 */
	private void setFont(HSSFFont font){
		style.setFont(font);
	}
	
	/**
	 * 设置换行
	 * @param wrapped true:换行 false:不换行
	 */
	public void setWrapText(boolean wrapped){
		style.setWrapText(wrapped);
	}
	
	
	/**
	 * 设计水平样式
	 * 参数值:HSSFCellStyle.ALIGN_CENTER
	 * @param align 
	 */
	public void setAlign(short align){
		style.setAlignment(align);
	}
	
	/**
	 * 设置垂直样式
	 * 参数值:HSSFCellStyle.VERTICAL_CENTER
	 * @param vertical 
	 */
	public void setVertical(short vertical){
		style.setVerticalAlignment(vertical);
	}
	
	/**
	 * 返回字体对象
	 *  font.setFontHeightInPoints((short)24);
     *	 font.setFontName("Courier New");
     *  font.setItalic(true);
     *  font.setStrikeout(true);
	 * @return
	 */
	public HSSFFont getHSSFFont(){
		return font;
	}
	
	/**
	 * 设置字体大小
	 * @param size 字号
	 */
	public void setFontSize(int size){
		font.setFontHeightInPoints((short)size);
		setFont(font);
	}
	
	/**
	 * 设置字体名称
	 * @param fontName 字体名称 "Courier New"
	 */
	public void setFontName(String fontName){
		font.setFontName(fontName);
		setFont(font);
	}
	
	/**
	 * 设置字体是否斜体
	 * @param italic 
	 */
	public void setFontItalic(boolean italic){
		font.setItalic(italic);
		setFont(font);
	}
	
	/**
	 * 设置字体黑体
	 * @param weight 分量
	 */
	public void setFontBoldweight(int weight){
		font.setBoldweight((short)weight);
		setFont(font);
	}
	
	/**
	 * 设置字体颜色
	 * 参数：HSSFColor.BLUE.index
	 * @param color
	 */
	public void setFontColor(short color){
		font.setColor(color);
		setFont(font);
	}
	
	/**
	 * 设置下划线
	 * <li> 参数 HSSFFont.U_SINGLE
	 * @param underline
	 */
	public void setFontUnderline(byte underline){
		font.setUnderline(underline);
		setFont(font);
	}
	
	
}
